package regex;

/**
 * 正则表达式数量词
 * X?    X，一次或一次也没有
 * X*     X，零次或多次
 * X+     X，一次或多次
 * X{n}    X，恰好 n 次
 * X{n,}   X，至少 n 次
 * X{n,m}   X，至少 n 次，但是不超过 m 次
 */
public class RegexDemo05 {
    public static void main(String[] args) {
        //method01();
        //method02();
        //method03();
        //method04();
        //method05();
        System.out.println("aa".matches("a{1,}"));//true
        System.out.println("".matches("a{1,}"));//false
        System.out.println("aaaa".matches("a{4,6}"));//true
        System.out.println("aaaaaaaa".matches("a{4,6}"));//false
    }

    private static void method05() {
        System.out.println("aaaa".matches("a{4}"));
    }

    private static void method04() {
        System.out.println("aaa".matches("a+"));//a出现一次或多次 true
        System.out.println("".matches("a+"));//false
        System.out.println("abb".matches("a+b+"));//true
    }

    private static void method03() {
        System.out.println("a".matches("a*"));//a出现0次或多次 一次也叫多次 true
        System.out.println("aaaaa".matches("a*"));//a出现0次或多次 一次也叫多次 true
        System.out.println("".matches("a*"));//a出现0次或多次 一次也叫多次 true
    }

    private static void method02() {
        System.out.println("a".matches("a?"));//a出现0次或1次 true
        System.out.println("b".matches("a?"));//a出现0次或1次 false
        System.out.println("aa".matches("a?"));//a出现0次或1次 false
    }

    private static void method01() {
        //要求一个字符串有10位,并且每一位都是小写字母
        //[a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z]
        System.out.println("abdefgiuyo".matches("[a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z]"));//true
        System.out.println("abdefgiuy1".matches("[a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z]"));//false
    }
}
